import java.util.List;

public class TreeMain {
    public static void main(String[] args) {
            BinaryTree tree = new BinaryTree();
            // 括号表示串（与原C++代码一致）
            String str = "A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))";

            // （1）创建二叉树
            BTNode root = tree.createBT(str);

            // （2）中序遍历输出
            List<Character> inorderResult = tree.inorderTraversal(root);
            System.out.print("二叉树的中序遍历结果：");
            for (char c : inorderResult) {
                System.out.print(c + " ");
            }
            System.out.println();

            // （3）查找'H'结点的左右孩子
            char target = 'H';
            char[] children = tree.findChild(root, target);
            String leftChild = children[0] == '#' ? "无" : String.valueOf(children[0]);
            String rightChild = children[1] == '#' ? "无" : String.valueOf(children[1]);
            System.out.println("'" + target + "'的左孩子：" + leftChild);
            System.out.println("'" + target + "'的右孩子：" + rightChild);

            // （4）计算二叉树高度
            int height = tree.getHeight(root);
            System.out.println("二叉树的高度：" + height);

            // （5）释放二叉树（模拟）
            tree.freeBT(root);
            System.out.println("二叉树资源已释放（GC自动回收）");
        }
    }
